package parsers

import (
	"fmt"
	"os"

	"mcp-server/internal/types"
)

// TxtParser TXT文件解析器
type TxtParser struct{}

// NewTxtParser 创建TXT解析器
func NewTxtParser() *TxtParser {
	return &TxtParser{}
}

// Parse 解析TXT文件
func (p *TxtParser) Parse(filePath string) (string, error) {
	// 检查文件是否存在
	if _, err := os.Stat(filePath); os.IsNotExist(err) {
		return "", fmt.Errorf("文件不存在: %s", filePath)
	}

	// 读取文件内容
	content, err := os.ReadFile(filePath)
	if err != nil {
		return "", fmt.Errorf("读取文件失败: %v", err)
	}

	// 转换为字符串并处理编码
	text := string(content)

	// 简单的编码检测和转换（这里可以扩展更复杂的编码检测）
	if !isValidUTF8(text) {
		// 尝试GBK编码转换（需要额外的库支持）
		// 这里先简单处理，实际项目中可以使用golang.org/x/text/encoding
		return "", fmt.Errorf("文件编码不支持，请使用UTF-8编码")
	}

	return text, nil
}

// SupportedExtensions 返回支持的文件扩展名
func (p *TxtParser) SupportedExtensions() []string {
	return []string{".txt", ".text"}
}

// 确保实现了接口
var _ types.FileParser = (*TxtParser)(nil)
